package functional.lambda;

import java.util.Arrays;
import java.util.List;

/**
 * Lambda 表达式：方法引用（Method Reference）中的静态方法引用
 *
 * @author Liu Yicong
 * @date 2025/10/8
 */
public class MethodRefStatic {
	public static void main(String[] args) {
		// 假设我们要使用 Stream 对一组字符串进行排序，并忽略大小写。
		// String 类提供了一个静态方法 compareToIgnoreCase
		// 正好符合 Comparator 接口（函数式接口）的抽象方法 compare(T o1, T o2) 的签名。
		List<String> names = Arrays.asList("Apple", "Cat", "banana");

		// 原始 Lambda 表达式
		names.sort((s1, s2) -> s1.compareToIgnoreCase(s2));

		System.out.println(names);

		// 使用静态方法引用
		names = Arrays.asList("Apple", "Cat", "banana");
		names.sort(String::compareToIgnoreCase);
		// 效果： names.sort(Comparator.comparing(String::toLowerCase))
		// s1 和 s2 自动作为参数传入 String.compareToIgnoreCase(s1, s2)
		System.out.println(names);
	}
}
